<?php
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING); 
class AgenteWeb{ 
 
  	private $SO        = "";  //Sistema Operativo 
  	private $navegador = "";  //Navegador 
  	private $agente    = "";  //Agente 
  
  	public function getSO(){
         return   $this->SO;
    }
    public function getNavegador(){
         return   $this->navegador;
    }
    public function getAgente(){
         return   $this->agente;
    }
    public function setAgente($agente){
            $this->agente=$agente;
    }
    public function setSO($SO){
            $this->SO=$SO;
    }
    public function setNavegador($navegador){
            $this->navegador=$navegador;
    }
	public  function reconocedorSistemaOperativo($Agente){ 
		if      (ereg("Windows NT 5.1",  $Agente)) $sistemaOperativo = "Windows XP";
		elseif  (ereg("Windows NT 5.0",  $Agente)) $sistemaOperativo = "Windows 2000";
		elseif  (ereg("Win98     ",      $Agente)) $sistemaOperativo = "Windows 98"; 
		elseif  (ereg("Win",             $Agente)) $sistemaOperativo = "Windows ??"; 
		elseif  ( (ereg("Mac",           $Agente)) || 
			  (ereg("PPC", $Agente))) $sistemaOperativo = "Macintosh"; 
		elseif  (ereg("Debian",          $Agente)) $sistemaOperativo = "Debian"; 
		elseif  (ereg("Linux",           $Agente)) $sistemaOperativo = "Linux"; 
		elseif  (ereg("FreeBSD",         $Agente)) $sistemaOperativo = "FreeBSD"; 
		elseif  (ereg("SunOS",           $Agente)) $sistemaOperativo = "SunOS"; 
		elseif  (ereg("IRIX",            $Agente)) $sistemaOperativo = "IRIX"; 
		elseif  (ereg("BeOS",            $Agente)) $sistemaOperativo = "BeOS"; 
		elseif  (ereg("OS/2",            $Agente)) $sistemaOperativo = "OS/2"; 
		elseif  (ereg("AIX",             $Agente)) $sistemaOperativo = "AIX"; 
		else   $sistemaOperativo = "Desconocido"; 
	 
		return $sistemaOperativo; 
	} 
 
	public  function reconocedorNavegador($agente){
	//primero tenemos k conocer si se trata de opera!!! 
	//ya que el identificador de este navegador a veces se puede trucar...(OPERA CAN BE spoofed as MSIE 6)
		if    (eregi("Opera( )*(/){0,1}([0-9]+)(\.([0-9])+)*",            $agente,$browser)); // son validos Opera/7.54 Opera/8 Opera/7.23 Opera 6.2
		elseif(eregi("Netscape([0-9]*)( )*(/){0,1}([0-9]+)(\.([0-9])+)*", $agente,$browser)); //son validos Netscape/7.02  Netscape6/6.2.1
		elseif(eregi("MSIE ([0-9]+)(\.([0-9])+)*",                        $agente,$browser)); //son validos MSIE 6.0 MSIE 5.0  MSIE 5.5
		elseif(eregi("Lynx",                                              $agente,$browser));
		elseif(eregi("WebTV",                                             $agente,$browser));
		elseif(eregi("Galeon/([0-9]+)(\.([0-9])+)*",                      $agente,$browser)); //Galeon/2.2.2
		elseif(eregi("Konqueror/([0-9]+)(\.([0-9])+)*",                   $agente,$browser)); //konqueror/2.2.2 konqueror/3.1
		elseif(eregi("Firefox( )*(/){0,1}([0-9]+)(\.([0-9])+)*",          $agente,$browser)); //Firefox/0.9 Firefox/0.10.1
	    elseif(eregi("Iceweasel( )*(/){0,1}([0-9]+)(\.([0-9])+)*",        $agente,$browser)); //IceWeasel/0.9 Firefox/0.10.1
		elseif(eregi("Firebird( )*(/){0,1}([0-9]+)(\.([0-9])+)*",         $agente,$browser)); //Firebird/0.7 Firebird/0.10.1
		elseif(preg_match("/Chrome/", 		 							  $agente,$browser)); //Chrome $agente,$browser));
		elseif(eregi("Safari",                                            $agente,$browser)); //Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9
		elseif ((eregi("Gecko",  $agente))||(eregi("X11",    $agente))
	      	||(eregi("Mozilla",$agente))||(eregi("U",      $agente)))  $nombre[0] = "Mozilla";
		elseif(eregi("WAP",                                               $agente,$browser));
		else $nombre[0]="Otro";
	
	      eregi("([a-z]+)",                         $browser[0],$nombre); //conseguimos el nombre
	      eregi("([0-9]+)(\.([0-9])+)*",            $browser[0],$version); //conseguimos la version
	      
	    $navegador="${nombre[0]} ${version[0]}"; //separamos el nombre y la version por un espacio
	
		return $navegador;
	}
	
	public function reconocerRobot($agente){
		if     (ereg("Google",  $agente)) $robot = "Google"; //Googlebot/2.1 (+http://www.google.com/bot.html)
		elseif (ereg("Yahoo",   $agente)) $robot = "Yahoo"; //Mozilla/5.0 (compatible; Yahoo! Slurp; http://www.webmasterworld.com/red.cgi?f=21&d=8530&url=http://help.yahoo.com/help/us/ysearch/slurp)
		elseif (ereg("msnbot",  $agente)) $robot = "MSN"; //msnbot/0.11 (+http://search.msn.com/msnbot.htm)
		elseif (ereg("Scooter", $agente)) $robot = "Bot"; // ? 
		elseif (ereg("Spider",  $agente)) $robot = "Bot"; // ? 
		elseif (ereg("Infoseek",$agente)) $robot = "Bot"; // ? 
		elseif (ereg("Slurp",   $agente)) $robot = "Bot"; // ? 
		elseif (ereg("bot",     $agente)) $robot = "Bot"; // ? 
		else  $robot="Otro";
	
		return $robot;
	}
	
	 public function parseaAgente(){
		$this->SO       = $this->reconocedorSistemaOperativo ($this->agente);
		$this->navegador= $this->reconocedorNavegador($this->agente);
	}
	
	public function __destruct(){
	}
}
?>